/*
 *
 *    Copyright (c) 2022 Project CHIP Authors
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

// THIS FILE IS GENERATED BY ZAP
// This file is generated from clusters-Enums.h.zapt

#pragma once

#include <clusters/shared/Enums.h>
#include <cstdint>

namespace chip
{
namespace app
{
	namespace Clusters
	{
		namespace PowerSource
		{

			// Enum for BatApprovedChemistryEnum
			enum class BatApprovedChemistryEnum : uint16_t {
				kUnspecified = 0x00,
				kAlkaline = 0x01,
				kLithiumCarbonFluoride = 0x02,
				kLithiumChromiumOxide = 0x03,
				kLithiumCopperOxide = 0x04,
				kLithiumIronDisulfide = 0x05,
				kLithiumManganeseDioxide = 0x06,
				kLithiumThionylChloride = 0x07,
				kMagnesium = 0x08,
				kMercuryOxide = 0x09,
				kNickelOxyhydride = 0x0A,
				kSilverOxide = 0x0B,
				kZincAir = 0x0C,
				kZincCarbon = 0x0D,
				kZincChloride = 0x0E,
				kZincManganeseDioxide = 0x0F,
				kLeadAcid = 0x10,
				kLithiumCobaltOxide = 0x11,
				kLithiumIon = 0x12,
				kLithiumIonPolymer = 0x13,
				kLithiumIronPhosphate = 0x14,
				kLithiumSulfur = 0x15,
				kLithiumTitanate = 0x16,
				kNickelCadmium = 0x17,
				kNickelHydrogen = 0x18,
				kNickelIron = 0x19,
				kNickelMetalHydride = 0x1A,
				kNickelZinc = 0x1B,
				kSilverZinc = 0x1C,
				kSodiumIon = 0x1D,
				kSodiumSulfur = 0x1E,
				kZincBromide = 0x1F,
				kZincCerium = 0x20,
				// All received enum values that are not listed above will be mapped
				// to kUnknownEnumValue. This is a helper enum value that should only
				// be used by code to process how it handles receiving and unknown
				// enum value. This specific should never be transmitted.
				kUnknownEnumValue = 33,
			};

			// Enum for BatChargeFaultEnum
			enum class BatChargeFaultEnum : uint8_t {
				kUnspecified = 0x00,
				kAmbientTooHot = 0x01,
				kAmbientTooCold = 0x02,
				kBatteryTooHot = 0x03,
				kBatteryTooCold = 0x04,
				kBatteryAbsent = 0x05,
				kBatteryOverVoltage = 0x06,
				kBatteryUnderVoltage = 0x07,
				kChargerOverVoltage = 0x08,
				kChargerUnderVoltage = 0x09,
				kSafetyTimeout = 0x0A,
				// All received enum values that are not listed above will be mapped
				// to kUnknownEnumValue. This is a helper enum value that should only
				// be used by code to process how it handles receiving and unknown
				// enum value. This specific should never be transmitted.
				kUnknownEnumValue = 11,
			};

			// Enum for BatChargeLevelEnum
			enum class BatChargeLevelEnum : uint8_t {
				kOk = 0x00,
				kWarning = 0x01,
				kCritical = 0x02,
				// All received enum values that are not listed above will be mapped
				// to kUnknownEnumValue. This is a helper enum value that should only
				// be used by code to process how it handles receiving and unknown
				// enum value. This specific should never be transmitted.
				kUnknownEnumValue = 3,
			};

			// Enum for BatChargeStateEnum
			enum class BatChargeStateEnum : uint8_t {
				kUnknown = 0x00,
				kIsCharging = 0x01,
				kIsAtFullCharge = 0x02,
				kIsNotCharging = 0x03,
				// All received enum values that are not listed above will be mapped
				// to kUnknownEnumValue. This is a helper enum value that should only
				// be used by code to process how it handles receiving and unknown
				// enum value. This specific should never be transmitted.
				kUnknownEnumValue = 4,
			};

			// Enum for BatCommonDesignationEnum
			enum class BatCommonDesignationEnum : uint16_t {
				kUnspecified = 0x00,
				kAaa = 0x01,
				kAa = 0x02,
				kC = 0x03,
				kD = 0x04,
				k4v5 = 0x05,
				k6v0 = 0x06,
				k9v0 = 0x07,
				k12aa = 0x08,
				kAaaa = 0x09,
				kA = 0x0A,
				kB = 0x0B,
				kF = 0x0C,
				kN = 0x0D,
				kNo6 = 0x0E,
				kSubC = 0x0F,
				kA23 = 0x10,
				kA27 = 0x11,
				kBa5800 = 0x12,
				kDuplex = 0x13,
				k4sr44 = 0x14,
				k523 = 0x15,
				k531 = 0x16,
				k15v0 = 0x17,
				k22v5 = 0x18,
				k30v0 = 0x19,
				k45v0 = 0x1A,
				k67v5 = 0x1B,
				kJ = 0x1C,
				kCr123a = 0x1D,
				kCr2 = 0x1E,
				k2cr5 = 0x1F,
				kCrP2 = 0x20,
				kCrV3 = 0x21,
				kSr41 = 0x22,
				kSr43 = 0x23,
				kSr44 = 0x24,
				kSr45 = 0x25,
				kSr48 = 0x26,
				kSr54 = 0x27,
				kSr55 = 0x28,
				kSr57 = 0x29,
				kSr58 = 0x2A,
				kSr59 = 0x2B,
				kSr60 = 0x2C,
				kSr63 = 0x2D,
				kSr64 = 0x2E,
				kSr65 = 0x2F,
				kSr66 = 0x30,
				kSr67 = 0x31,
				kSr68 = 0x32,
				kSr69 = 0x33,
				kSr516 = 0x34,
				kSr731 = 0x35,
				kSr712 = 0x36,
				kLr932 = 0x37,
				kA5 = 0x38,
				kA10 = 0x39,
				kA13 = 0x3A,
				kA312 = 0x3B,
				kA675 = 0x3C,
				kAc41e = 0x3D,
				k10180 = 0x3E,
				k10280 = 0x3F,
				k10440 = 0x40,
				k14250 = 0x41,
				k14430 = 0x42,
				k14500 = 0x43,
				k14650 = 0x44,
				k15270 = 0x45,
				k16340 = 0x46,
				kRcr123a = 0x47,
				k17500 = 0x48,
				k17670 = 0x49,
				k18350 = 0x4A,
				k18500 = 0x4B,
				k18650 = 0x4C,
				k19670 = 0x4D,
				k25500 = 0x4E,
				k26650 = 0x4F,
				k32600 = 0x50,
				// All received enum values that are not listed above will be mapped
				// to kUnknownEnumValue. This is a helper enum value that should only
				// be used by code to process how it handles receiving and unknown
				// enum value. This specific should never be transmitted.
				kUnknownEnumValue = 81,
			};

			// Enum for BatFaultEnum
			enum class BatFaultEnum : uint8_t {
				kUnspecified = 0x00,
				kOverTemp = 0x01,
				kUnderTemp = 0x02,
				// All received enum values that are not listed above will be mapped
				// to kUnknownEnumValue. This is a helper enum value that should only
				// be used by code to process how it handles receiving and unknown
				// enum value. This specific should never be transmitted.
				kUnknownEnumValue = 3,
			};

			// Enum for BatReplaceabilityEnum
			enum class BatReplaceabilityEnum : uint8_t {
				kUnspecified = 0x00,
				kNotReplaceable = 0x01,
				kUserReplaceable = 0x02,
				kFactoryReplaceable = 0x03,
				// All received enum values that are not listed above will be mapped
				// to kUnknownEnumValue. This is a helper enum value that should only
				// be used by code to process how it handles receiving and unknown
				// enum value. This specific should never be transmitted.
				kUnknownEnumValue = 4,
			};

			// Enum for PowerSourceStatusEnum
			enum class PowerSourceStatusEnum : uint8_t {
				kUnspecified = 0x00,
				kActive = 0x01,
				kStandby = 0x02,
				kUnavailable = 0x03,
				// All received enum values that are not listed above will be mapped
				// to kUnknownEnumValue. This is a helper enum value that should only
				// be used by code to process how it handles receiving and unknown
				// enum value. This specific should never be transmitted.
				kUnknownEnumValue = 4,
			};

			// Enum for WiredCurrentTypeEnum
			enum class WiredCurrentTypeEnum : uint8_t {
				kAc = 0x00,
				kDc = 0x01,
				// All received enum values that are not listed above will be mapped
				// to kUnknownEnumValue. This is a helper enum value that should only
				// be used by code to process how it handles receiving and unknown
				// enum value. This specific should never be transmitted.
				kUnknownEnumValue = 2,
			};

			// Enum for WiredFaultEnum
			enum class WiredFaultEnum : uint8_t {
				kUnspecified = 0x00,
				kOverVoltage = 0x01,
				kUnderVoltage = 0x02,
				// All received enum values that are not listed above will be mapped
				// to kUnknownEnumValue. This is a helper enum value that should only
				// be used by code to process how it handles receiving and unknown
				// enum value. This specific should never be transmitted.
				kUnknownEnumValue = 3,
			};

			// Bitmap for Feature
			enum class Feature : uint32_t {
				kWired = 0x1,
				kBattery = 0x2,
				kRechargeable = 0x4,
				kReplaceable = 0x8,
			};
		} // namespace PowerSource
	} // namespace Clusters
} // namespace app
} // namespace chip
